home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2000 March / maximum-cd-2000-03.iso / Quake3 Game Source / Q3AGameSource.exe / Main / ui_options.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-18  |  5.7 KB  |  209 lines

  1. /*
  2. =======================================================================
  3.  
  4. SYSTEM CONFIGURATION MENU
  5.  
  6. =======================================================================
  7. */
  8.  
  9. #include "ui_local.h"
  10.  
  11.  
  12. #define ART_FRAMEL            "menu/art/frame2_l"
  13. #define ART_FRAMER            "menu/art/frame1_r"
  14. #define ART_BACK0            "menu/art/back_0"
  15. #define ART_BACK1            "menu/art/back_1"
  16.  
  17. #define ID_GRAPHICS            10
  18. #define ID_DISPLAY            11
  19. #define ID_SOUND            12
  20. #define ID_NETWORK            13
  21. #define ID_BACK                14
  22.  
  23. #define VERTICAL_SPACING    34
  24.  
  25. typedef struct {
  26.     menuframework_s    menu;
  27.  
  28.     menutext_s        banner;
  29.     menubitmap_s    framel;
  30.     menubitmap_s    framer;
  31.  
  32.     menutext_s        graphics;
  33.     menutext_s        display;
  34.     menutext_s        sound;
  35.     menutext_s        network;
  36.     menubitmap_s    back;
  37. } optionsmenu_t;
  38.  
  39. static optionsmenu_t    s_options;
  40.  
  41.  
  42. /*
  43. =================
  44. Options_Event
  45. =================
  46. */
  47. static void Options_Event( void* ptr, int event ) {
  48.     if( event != QM_ACTIVATED ) {
  49.         return;
  50.     }
  51.  
  52.     switch( ((menucommon_s*)ptr)->id ) {
  53.     case ID_GRAPHICS:
  54.         UI_GraphicsOptionsMenu();
  55.         break;
  56.  
  57.     case ID_DISPLAY:
  58.         UI_DisplayOptionsMenu();
  59.         break;
  60.  
  61.     case ID_SOUND:
  62.         UI_SoundOptionsMenu();
  63.         break;
  64.  
  65.     case ID_NETWORK:
  66.         UI_NetworkOptionsMenu();
  67.         break;
  68.  
  69.     case ID_BACK:
  70.         UI_PopMenu();
  71.         break;
  72.     }
  73. }
  74.  
  75.  
  76. /*
  77. ===============
  78. SystemConfig_Cache
  79. ===============
  80. */
  81. void SystemConfig_Cache( void ) {
  82.     trap_R_RegisterShaderNoMip( ART_FRAMEL );
  83.     trap_R_RegisterShaderNoMip( ART_FRAMER );
  84.     trap_R_RegisterShaderNoMip( ART_BACK0 );
  85.     trap_R_RegisterShaderNoMip( ART_BACK1 );
  86. }
  87.  
  88. /*
  89. ===============
  90. Options_MenuInit
  91. ===============
  92. */
  93. void Options_MenuInit( void ) {
  94.     int                y;
  95.     uiClientState_t    cstate;
  96.  
  97.     memset( &s_options, 0, sizeof(optionsmenu_t) );
  98.  
  99.     SystemConfig_Cache();
  100.     s_options.menu.wrapAround = qtrue;
  101.  
  102.     trap_GetClientState( &cstate );
  103.     if ( cstate.connState >= CA_CONNECTED ) {
  104.         s_options.menu.fullscreen = qfalse;
  105.     }
  106.     else {
  107.         s_options.menu.fullscreen = qtrue;
  108.     }
  109.  
  110.     s_options.banner.generic.type    = MTYPE_BTEXT;
  111.     s_options.banner.generic.flags    = QMF_CENTER_JUSTIFY;
  112.     s_options.banner.generic.x        = 320;
  113.     s_options.banner.generic.y        = 16;
  114.     s_options.banner.string            = "SYSTEM SETUP";
  115.     s_options.banner.color            = color_white;
  116.     s_options.banner.style            = UI_CENTER;
  117.  
  118.     s_options.framel.generic.type  = MTYPE_BITMAP;
  119.     s_options.framel.generic.name  = ART_FRAMEL;
  120.     s_options.framel.generic.flags = QMF_INACTIVE;
  121.     s_options.framel.generic.x       = 8;  
  122.     s_options.framel.generic.y       = 76;
  123.     s_options.framel.width         = 256;
  124.     s_options.framel.height         = 334;
  125.  
  126.     s_options.framer.generic.type  = MTYPE_BITMAP;
  127.     s_options.framer.generic.name  = ART_FRAMER;
  128.     s_options.framer.generic.flags = QMF_INACTIVE;
  129.     s_options.framer.generic.x       = 376;
  130.     s_options.framer.generic.y       = 76;
  131.     s_options.framer.width         = 256;
  132.     s_options.framer.height         = 334;
  133.  
  134.     y = 168;
  135.     s_options.graphics.generic.type        = MTYPE_PTEXT;
  136.     s_options.graphics.generic.flags    = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  137.     s_options.graphics.generic.callback    = Options_Event;
  138.     s_options.graphics.generic.id        = ID_GRAPHICS;
  139.     s_options.graphics.generic.x        = 320;
  140.     s_options.graphics.generic.y        = y;
  141.     s_options.graphics.string            = "GRAPHICS";
  142.     s_options.graphics.color            = color_red;
  143.     s_options.graphics.style            = UI_CENTER;
  144.  
  145.     y += VERTICAL_SPACING;
  146.     s_options.display.generic.type        = MTYPE_PTEXT;
  147.     s_options.display.generic.flags        = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  148.     s_options.display.generic.callback    = Options_Event;
  149.     s_options.display.generic.id        = ID_DISPLAY;
  150.     s_options.display.generic.x            = 320;
  151.     s_options.display.generic.y            = y;
  152.     s_options.display.string            = "DISPLAY";
  153.     s_options.display.color                = color_red;
  154.     s_options.display.style                = UI_CENTER;
  155.  
  156.     y += VERTICAL_SPACING;
  157.     s_options.sound.generic.type        = MTYPE_PTEXT;
  158.     s_options.sound.generic.flags        = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  159.     s_options.sound.generic.callback    = Options_Event;
  160.     s_options.sound.generic.id            = ID_SOUND;
  161.     s_options.sound.generic.x            = 320;
  162.     s_options.sound.generic.y            = y;
  163.     s_options.sound.string                = "SOUND";
  164.     s_options.sound.color                = color_red;
  165.     s_options.sound.style                = UI_CENTER;
  166.  
  167.     y += VERTICAL_SPACING;
  168.     s_options.network.generic.type        = MTYPE_PTEXT;
  169.     s_options.network.generic.flags        = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  170.     s_options.network.generic.callback    = Options_Event;
  171.     s_options.network.generic.id        = ID_NETWORK;
  172.     s_options.network.generic.x            = 320;
  173.     s_options.network.generic.y            = y;
  174.     s_options.network.string            = "NETWORK";
  175.     s_options.network.color                = color_red;
  176.     s_options.network.style                = UI_CENTER;
  177.  
  178.     s_options.back.generic.type        = MTYPE_BITMAP;
  179.     s_options.back.generic.name     = ART_BACK0;
  180.     s_options.back.generic.flags    = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
  181.     s_options.back.generic.callback = Options_Event;
  182.     s_options.back.generic.id        = ID_BACK;
  183.     s_options.back.generic.x        = 0;
  184.     s_options.back.generic.y        = 480-64;
  185.     s_options.back.width              = 128;
  186.     s_options.back.height              = 64;
  187.     s_options.back.focuspic         = ART_BACK1;
  188.  
  189.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.banner );
  190.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.framel );
  191.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.framer );
  192.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.graphics );
  193.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.display );
  194.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.sound );
  195.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.network );
  196.     Menu_AddItem( &s_options.menu, ( void * ) &s_options.back );
  197. }
  198.  
  199.  
  200. /*
  201. ===============
  202. UI_SystemConfigMenu
  203. ===============
  204. */
  205. void UI_SystemConfigMenu( void ) {
  206.     Options_MenuInit();
  207.     UI_PushMenu ( &s_options.menu );
  208. }
  209.